
public class N31 {
public static void main(String[] args) {
	N31_1 n1=new N31_1();
	N31_1 n2=new N31_1();
	
	
	//调用线程时，使用start方法，将run方法提交
	n1.start();
	n2.start();
}


}

//俩种写法。——————解决多线程对于“数据混乱”处理的方法
//1 修饰方法    public synchronized void method() 
//2 创建代码块  synchronized (类名.class) {}
    


//只有锁定目标是实例资源和静态资源的区别，静态资源（静态方法，静态变量）是“标记在方法区”中，
// 实例资源是“标记在堆中”，
class N31_1  extends Thread{
	public static int num=0;
	@Override
	public void run() {
		method2();
	}
	
	//synchronized   同步   用来“修饰方法”，实现在使用资源之前，先获取资源锁
	
	public synchronized void method() {
		for(int i=0;i<1000000;i++){
			System.out.println(Thread.currentThread().getName()+"\t"+num++);
		}
	}
	
	public void method2() {
		for(int i=0;i<100;i++){
			synchronized (N31_1.class) {
				System.out.println(Thread.currentThread().getName()+"\t"+num++);
			}
		}
	}
}
